<!--SIF Implementation Specification 2.2-6 (March 17, 2008)-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="http://www.sifinfo.org/infrastructure/2.x" xmlns:sif="http://www.sifinfo.org/infrastructure/2.x" elementFormDefault="qualified">
  <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="imports/xml/xml.xsd" />
  <xs:complexType name="LibraryPatronStatusType">
    <xs:annotation>
      <xs:documentation>This object reports the current library status for the requested student or staff member.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="ElectronicIdList" minOccurs="0" type="sif:ElectronicIdListType">
        <xs:annotation>
          <xs:documentation>List of electronic identifiers associated with the patron.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TransactionList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Transaction" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="ItemInfo" minOccurs="0" nillable="true">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Title" minOccurs="0" type="xs:string">
                          <xs:annotation>
                            <xs:documentation>
							The title of the item being referenced by this Transaction.
						</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                        <xs:element name="Author" minOccurs="0" nillable="true" type="xs:string">
                          <xs:annotation>
                            <xs:documentation>
							The author of the item being referenced by this Transaction.
						</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                        <xs:element name="ElectronicId" minOccurs="0" nillable="true" type="sif:ElectronicIdType">
                          <xs:annotation>
                            <xs:documentation>
							Electronic identifier associated with this Transaction.
						</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                        <xs:element name="CallNumber" minOccurs="0" nillable="true" type="xs:string">
                          <xs:annotation>
                            <xs:documentation>The library call number, if any, assigned to this item.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                        <xs:element name="Price" minOccurs="0" nillable="true" type="sif:MonetaryAmountType">
                          <xs:annotation>
                            <xs:documentation>The cost of this item. </xs:documentation>
                          </xs:annotation>
                        </xs:element>
                      </xs:sequence>
                      <xs:attribute name="Type" use="required">
                        <xs:annotation>
                          <xs:documentation>Type of item being referenced.</xs:documentation>
                        </xs:annotation>
                        <xs:simpleType>
                          <xs:restriction base="xs:token">
                            <xs:enumeration value="Asset" />
                            <xs:enumeration value="LibraryMaterial" />
                            <xs:enumeration value="Media" />
                            <xs:enumeration value="Textbook" />
                          </xs:restriction>
                        </xs:simpleType>
                      </xs:attribute>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="CheckoutInfo" minOccurs="0" nillable="true">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="ReturnBy" minOccurs="0" type="xs:dateTime">
                          <xs:annotation>
                            <xs:documentation>The date and time that this item is due to be returned.</xs:documentation>
                          </xs:annotation>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="FineInfoList" minOccurs="0" nillable="true">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="FineInfo" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="Assessed" minOccurs="0" type="xs:dateTime">
                                <xs:annotation>
                                  <xs:documentation>The date and time that this fine was assessed to the patron.</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                              <xs:element name="Description" minOccurs="0" nillable="true" type="xs:string">
                                <xs:annotation>
                                  <xs:documentation>More detailed information concerning the assessed fine or refund.</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                              <xs:element name="Amount" minOccurs="0" type="sif:MonetaryAmountType">
                                <xs:annotation>
                                  <xs:documentation>The current balance of the fine expressed as a positive number. </xs:documentation>
                                </xs:annotation>
                              </xs:element>
                              <xs:element name="Reference" minOccurs="0" nillable="true" type="xs:string">
                                <xs:annotation>
                                  <xs:documentation>An application-specific reference identifier for the fine being assessed, paid, or refunded.  It is intended to identify a specific fine transaction allowing consumers to include this information in Billing or Payment events sent to the library application.</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                            </xs:sequence>
                            <xs:attribute name="Type" use="required">
                              <xs:annotation>
                                <xs:documentation>Type of fine assessed to this patron and item.  A corresponding ItemInfo is required for all FineInfo types except "Other" and "Refund" where it is permissible to omit the ItemInfo element if there isn't an item associated with the fine.</xs:documentation>
                              </xs:annotation>
                              <xs:simpleType>
                                <xs:restriction base="xs:token">
                                  <xs:enumeration value="Damaged" />
                                  <xs:enumeration value="Lost" />
                                  <xs:enumeration value="Overdue" />
                                  <xs:enumeration value="Refund" />
                                  <xs:enumeration value="Other" />
                                </xs:restriction>
                              </xs:simpleType>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="HoldInfoList" minOccurs="0" nillable="true">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="HoldInfo" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="DatePlaced" minOccurs="0" type="xs:date">
                                <xs:annotation>
                                  <xs:documentation>The date that the patron placed the hold.</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                              <xs:element name="DateNeeded" minOccurs="0" nillable="true" type="xs:date">
                                <xs:annotation>
                                  <xs:documentation>The date that the patron needs this item by.</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                              <xs:element name="MadeAvailable" minOccurs="0" nillable="true" type="xs:date">
                                <xs:annotation>
                                  <xs:documentation>The date that this item became available for the patron to pick up.</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                              <xs:element name="Expires" minOccurs="0" nillable="true" type="xs:date">
                                <xs:annotation>
                                  <xs:documentation>The date when this ready hold will expire freeing the item to be assigned to another patron.</xs:documentation>
                                </xs:annotation>
                              </xs:element>
                            </xs:sequence>
                            <xs:attribute name="Type" use="required">
                              <xs:annotation>
                                <xs:documentation>The type of hold being referenced.</xs:documentation>
                              </xs:annotation>
                              <xs:simpleType>
                                <xs:restriction base="xs:token">
                                  <xs:enumeration value="Ready">
                                    <xs:annotation>
                                      <xs:documentation>(which means that a previously placed hold is ready for the patron to pick up at the library desk)</xs:documentation>
                                    </xs:annotation>
                                  </xs:enumeration>
                                  <xs:enumeration value="NotReady">
                                    <xs:annotation>
                                      <xs:documentation>(hold has been placed but hasn't been fulfilled yet)</xs:documentation>
                                    </xs:annotation>
                                  </xs:enumeration>
                                </xs:restriction>
                              </xs:simpleType>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="MessageList" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Message" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Sent" minOccurs="0" nillable="true" type="xs:dateTime">
                    <xs:annotation>
                      <xs:documentation>The date and time that this message was originally sent.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                  <xs:element name="Text" minOccurs="0" type="xs:string">
                    <xs:annotation>
                      <xs:documentation>The contents of the message.</xs:documentation>
                    </xs:annotation>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="Priority" use="required">
                  <xs:annotation>
                    <xs:documentation>The level of urgency associated with this message.</xs:documentation>
                  </xs:annotation>
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:enumeration value="Low" />
                      <xs:enumeration value="Normal" />
                      <xs:enumeration value="Urgent" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="NumberOfCheckouts" minOccurs="0" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>The total number of items that this patron currently has checked out including overdue items.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="NumberOfOverdues" minOccurs="0" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>The total number of checkouts that are currently overdue.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="NumberOfFines" minOccurs="0" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>The total number of fines currently assessed to this patron.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="FineAmount" minOccurs="0" type="sif:MonetaryAmountType">
        <xs:annotation>
          <xs:documentation>The total monetary amount of the fines that this patron currently owes the library expressed as a positive number.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="NumberOfRefunds" minOccurs="0" nillable="true" type="xs:unsignedInt">
        <xs:annotation>
          <xs:documentation>The total number of refunds currently credited to this patron.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="RefundAmount" minOccurs="0" nillable="true" type="sif:MonetaryAmountType">
        <xs:annotation>
          <xs:documentation>The total monetary amount of the refunds that the library currently owes the patron expressed as a positive number.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SIF_Metadata" minOccurs="0" nillable="true" type="sif:SIF_MetadataType" />
      <xs:element name="SIF_ExtendedElements" minOccurs="0" nillable="true" type="sif:SIF_ExtendedElementsType" />
    </xs:sequence>
    <xs:attribute name="LibraryType" use="required" type="xs:string">
      <xs:annotation>
        <xs:documentation>A library-defined language-independent value that refers to a specific patron type.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SIF_RefId" use="required" type="sif:IdRefType">
      <xs:annotation>
        <xs:documentation>The SIF wide unique identifier of a student or teacher.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="SIF_RefObject" use="required">
      <xs:annotation>
        <xs:documentation>The type of patron mapped to a SIF supported object. Library automation products work with patrons who could be students or teachers.</xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="StudentPersonal" />
          <xs:enumeration value="StaffPersonal" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="LibraryPatronStatus" type="sif:LibraryPatronStatusType" />

</xs:schema>